package com.example.mq.common;

import java.io.*;

/**
 * 这个类提供 序列化 和 反序列化 方法
 */
public class BinaryTool {
    //  序列化为字节数组
    public static byte[] toBytes(Object object) throws IOException {
        //  借助 节点流（字节输出流） 转换数据
        try(ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream()) {
            //  使用 处理流 处理一下数据
            try(ObjectOutputStream outputStream = new ObjectOutputStream(byteArrayOutputStream)) {
                outputStream.writeObject(object);
            }
            return byteArrayOutputStream.toByteArray();
        }
    }

    //  反序列为java对象
    public static Object fromBytes(byte[] data) throws IOException, ClassNotFoundException {
        //  借助 节点流（字节输入流） 转换数据
        Object object;
        try(ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(data)) {
            try(ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream)) {
                object = objectInputStream.readObject();
            }
            return object;
        }
    }
}
